今天我們將練習 vue-router 兩種進階顯示方式,多重顯示
與巢狀路由
,這樣的設計會讓我們的系統,搭配 router path 顯得語意化且更具結構性。
利用一個 path 可以控制多個 view 的方法,
也就是說可以在 app.vue 上面使用多個 <router-view></router-view>
這樣我們要如何設定哪個 <router-view>
要顯示元件呢?
只需要在元件上命名
既可,直接看以下範例。
替每個 view 命名,就可以針對使用了!
<div class="row">
<router-view name="viewLeft" class="col-md-6 viewLeft"></router-view>
<router-view name="viewRight" class="col-md-6 viewRight"></router-view>
</div>
在路由表設定 components
物件,
key | value |
---|---|
router-view 的 name |
component |
哪一個 view 要顯示哪個 component
- 不設定 name 的 view 為 default
- 注意!多重顯示為設定:component
s
{
path: '/multiple',
name: 'multiple',
components: {
viewLeft: shop,
viewRight: cart,
},
meta: { requiresAuth: false },
},
概念是,第一層 path 顯示的元件中還可以嵌入第二層 path 元件的路由方式。
如:shop/cart
第一層我們會載入 shop 元件,然後在 shop 裡面會載入第二層 path cart 元件
在第一層元件中(shop.vue)
插入 <router-view></router-view>
在你希望顯示第二層元件的地方。
<template>
<div id="shop">
<!--shop code 略.. -->
<!-- nested-routes -->
<router-view class="nested-routes"></router-view>
</div>
</template>
在第一層 path 下面使用 children
設定第二層的 path
與相對應的 component
{
path: '/shop',
name: 'shop',
component: shop,
meta: { requiresAuth: false },
children: [ // 將會把對應到 path 的 component 放到 shop 的 <router-view />
{
path: 'cart', // url= shop/cart
component: cart,
meta: { requiresAuth: false },
},
{
path: 'todo', // url= shop/todo
component: todo,
meta: { requiresAuth: false },
},
{
path: 'hello', // url= shop/hello
component: Hello,
meta: { requiresAuth: false },
},
],
},
以上是 vue-router 進階的兩種顯示方式,在應用上面巢狀路由第一層可以固定某塊功能的版面。
比如,以下這種版型。
系統中有一系列功能與 API 都是在操控 user 資料,
我們可以利用巢狀路由,將藍色區塊設計在第一層 path 上,
當使用者切換左邊選單的時候(用 router-link 設計),再去替換掉中間的內容。
實作小範例入門 Vue & Vuex 2.0 - github 完整範例
使用 git checkout 切換每天範例。